package indi.jp.project.business.yunying.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import indi.jp.project.core.entity.BaseEntity;
import indi.jp.project.core.entity.po.AttachmentPO;
import indi.jp.project.process.entity.FlowTask;

import java.util.Date;
import java.util.List;

/**
 * 发票实体类
 *
 * @author makejava
 * @since 2021-08-16 10:26:15
 */
public class FapiaoFiled extends BaseEntity {
    /**
     * 主键
     */
    private String id;
    /**
     * 开票日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date invoiceDate;
    /**
     * 项目编号
     */
    private String projectCode;
    /**
     * 项目名称
     */
    private String projectName;
    /**
     * 业主单位名称
     */
    private String clientCompanyName;
    /**
     * 发票金额
     */
    private Long fapiaoAmount;
    /**
     * 预计到账时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date expectedArrivalTime;
    /**
     * 发票摘要
     */
    private String fapiaoAbsrtact;
    /**
     * 发票备注
     */
    private String fapiaoRemark;
    /**
     * 是否需要开具收据（0:否，1:是）
     */
    private Integer needReceipt;
    /**
     * 付款单位名称
     */
    private String payer;
    /**
     * 付款单位纳税识别号
     */
    private String payerTaxIdNo;
    /**
     * 付款单位地址
     */
    private String payerAddress;
    /**
     * 付款单位开户行
     */
    private String payerBankName;
    /**
     * 付款单位帐号
     */
    private String payerBankNo;
    /**
     * 付款单位电话
     */
    private String payerTelphone;
    /**
     * 流程类型编码
     */
    private String flowTypeCode;

    /** 流程状态，以0为起点 */
    private Integer state;
    /**
     * 状态名称
     */
    private String stateName;
    /**
     * 处理人
     */
    private String handler;
    /**
     * 处理人名称
     */
    private String handlerName;
    /**
     * 是否允许撤回
     */
    private Integer allowRevoke;
    /**
     * 被驳回时状态
     */
    private Integer rejectedState;

    private List<AttachmentPO> attachments;

    private List<FlowTask> flowList;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getProjectCode() {
        return projectCode;
    }

    public void setProjectCode(String projectCode) {
        this.projectCode = projectCode;
    }

    public String getProjectName() {
        return projectName;
    }

    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }

    public String getClientCompanyName() {
        return clientCompanyName;
    }

    public void setClientCompanyName(String clientCompanyName) {
        this.clientCompanyName = clientCompanyName;
    }

    public Long getFapiaoAmount() {
        return fapiaoAmount;
    }

    public void setFapiaoAmount(Long fapiaoAmount) {
        this.fapiaoAmount = fapiaoAmount;
    }

    public Date getExpectedArrivalTime() {
        return expectedArrivalTime;
    }

    public void setExpectedArrivalTime(Date expectedArrivalTime) {
        this.expectedArrivalTime = expectedArrivalTime;
    }

    public String getFapiaoAbsrtact() {
        return fapiaoAbsrtact;
    }

    public void setFapiaoAbsrtact(String fapiaoAbsrtact) {
        this.fapiaoAbsrtact = fapiaoAbsrtact;
    }

    public String getFapiaoRemark() {
        return fapiaoRemark;
    }

    public void setFapiaoRemark(String fapiaoRemark) {
        this.fapiaoRemark = fapiaoRemark;
    }

    public Integer getNeedReceipt() {
        return needReceipt;
    }

    public void setNeedReceipt(Integer needReceipt) {
        this.needReceipt = needReceipt;
    }

    public String getPayer() {
        return payer;
    }

    public void setPayer(String payer) {
        this.payer = payer;
    }

    public String getPayerTaxIdNo() {
        return payerTaxIdNo;
    }

    public void setPayerTaxIdNo(String payerTaxIdNo) {
        this.payerTaxIdNo = payerTaxIdNo;
    }

    public String getPayerAddress() {
        return payerAddress;
    }

    public void setPayerAddress(String payerAddress) {
        this.payerAddress = payerAddress;
    }

    public String getPayerBankName() {
        return payerBankName;
    }

    public void setPayerBankName(String payerBankName) {
        this.payerBankName = payerBankName;
    }

    public String getPayerBankNo() {
        return payerBankNo;
    }

    public void setPayerBankNo(String payerBankNo) {
        this.payerBankNo = payerBankNo;
    }

    public String getPayerTelphone() {
        return payerTelphone;
    }

    public void setPayerTelphone(String payerTelphone) {
        this.payerTelphone = payerTelphone;
    }

    public String getFlowTypeCode() {
        return flowTypeCode;
    }

    public void setFlowTypeCode(String flowTypeCode) {
        this.flowTypeCode = flowTypeCode;
    }

    public Integer getState() {
        return state;
    }

    public void setState(Integer state) {
        this.state = state;
    }

    public String getStateName() {
        return stateName;
    }

    public void setStateName(String stateName) {
        this.stateName = stateName;
    }

    public String getHandler() {
        return handler;
    }

    public void setHandler(String handler) {
        this.handler = handler;
    }

    public String getHandlerName() {
        return handlerName;
    }

    public void setHandlerName(String handlerName) {
        this.handlerName = handlerName;
    }

    public List<AttachmentPO> getAttachments() {
        return attachments;
    }

    public void setAttachments(List<AttachmentPO> attachments) {
        this.attachments = attachments;
    }

    public List<FlowTask> getFlowList() {
        return flowList;
    }

    public void setFlowList(List<FlowTask> flowList) {
        this.flowList = flowList;
    }

    public Date getInvoiceDate() {
        return invoiceDate;
    }

    public void setInvoiceDate(Date invoiceDate) {
        this.invoiceDate = invoiceDate;
    }

    public Integer getAllowRevoke() {
        return allowRevoke;
    }

    public void setAllowRevoke(Integer allowRevoke) {
        this.allowRevoke = allowRevoke;
    }

    public Integer getRejectedState() {
        return rejectedState;
    }

    public void setRejectedState(Integer rejectedState) {
        this.rejectedState = rejectedState;
    }
}
